package grupobbva.pe.operhc.service;

import java.util.ArrayList;
import java.util.List;

import grupobbva.pe.operhc.dao.ConfigDAO;
import grupobbva.pe.operhc.dao.LDAPConfigDAO;
import grupobbva.pe.operhc.dao.LdapPeruDAO;
import grupobbva.pe.operhc.dao.TablaDAO;
import grupobbva.pe.operhc.domain.Parametro;
import grupobbva.pe.operhc.domain.Tabla;
import grupobbva.pe.operhc.util.GenericObject;

import org.apache.log4j.Logger;

import com.ibatis.dao.client.DaoManager;

public class TablaServiceImpl implements TablaService {
	private DaoManager daoMgr;
	private DaoManager daoLdapMgr;
	private TablaDAO tablaDAO;
	private LdapPeruDAO ldapPeruDAO;
	
	private static Logger logger = Logger.getLogger(
	ParametroServiceImpl.class);
	
	public TablaServiceImpl() {
		try {
			daoMgr       = ConfigDAO.getDaoManager();
			daoLdapMgr   = LDAPConfigDAO.getDaoManager();
			tablaDAO = (TablaDAO) daoMgr.getDao(TablaDAO.class);
			ldapPeruDAO  = (LdapPeruDAO) daoLdapMgr.getDao(LdapPeruDAO.class);
		} catch (Exception e) {
			logger.error(GenericObject.formatException(e));
		}
	}
	
	public List<Tabla> getAllTypeTabla() {
		
		List<Tabla> list = tablaDAO.getAllTypeTabla();
		List<Tabla> listAll = new ArrayList<Tabla>();
		
//		Tabla bean = new Tabla();
//		bean.setIdTabla(new Long("0"));
//		bean.setDescripcion("Todos");
//		
//		listAll.add(bean);
		listAll.addAll(list);		
		return listAll;
	}
	
	public List<Tabla> getTablaByTablaType(String codTipoTabla){
		return tablaDAO.getTablaByTablaType(codTipoTabla);
	}

	public Tabla getTablaByCodes(String codTabla, String codTipoTabla) {
		return tablaDAO.getTablaByCodes(codTabla, codTipoTabla);
	}
	
	public boolean verifyParameterUniqueCodigo(String codigo) {
		return tablaDAO.verifyParameterUniqueCodigo(codigo);
	}
	
	public void saveTabla(Tabla bean, boolean isNew) throws Exception {
		tablaDAO.saveTabla(bean, isNew);
	}

	public void deleteTablaByCode(String codes, String codTipoTabla) throws Exception{
		tablaDAO.deleteTablaByCode(codes, codTipoTabla);
	}
	public boolean verifyParameterUniqueCodigoUpdate(String codigo, String codTipoTablaPadre) {
		return tablaDAO.verifyParameterUniqueCodigoUpdate(codigo, codTipoTablaPadre);
	}
	

}
